/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package ejb;
import Exceptions.ExceptionInterceptor;
import Facades.JoueursFacadeLocal;
import Facades.PionsFacadeLocal;
import Facades.PlateauxFacadeLocal;
import ant.Joueurs;
import ant.Pions;
import ant.Plateaux;
import java.awt.Point;
import java.util.List;
import javax.ejb.EJB;
import javax.ejb.Stateful;
import javax.interceptor.Interceptors;
/**
*
* @author Greenlamp
*/
@Stateful
public class SessionBean implements SessionBeanRemote {
@EJB
private JoueursFacadeLocal joueursFacade;
@EJB
private PionsFacadeLocal pionsFacade;
@EJB
private PlateauxFacadeLocal plateauxFacade;
// Add business logic below. (Right-click in editor and choose
// "Insert Code > Add Business Method")
@Override
@Interceptors(ExceptionInterceptor.class)
public void createPlateau(String nomPlateau){
plateauxFacade.create(new Plateaux(nomPlateau, 0));
placerPieces(nomPlateau, 0);
placerPieces(nomPlateau, 1);
}
@Override
@Interceptors(ExceptionInterceptor.class)
public void createJoueur(int couleur, String nomPlateau){
Joueurs joueur = new Joueurs(Integer.MIN_VALUE, couleur, nomPlateau);
joueursFacade.create(joueur);
}
@Override
@Interceptors(ExceptionInterceptor.class)
public List<Plateaux> getPlateaux() {
return plateauxFacade.findAll();
}
@Override
@Interceptors(ExceptionInterceptor.class)
public List<Pions> getPions() {
return pionsFacade.findAll();
}
@Override
@Interceptors(ExceptionInterceptor.class)
public void createPion(String nom, int positionX, int positionY, String nomPlateau, int couleur) {
Pions pion = new Pions();
pion.setIdPion(Integer.MIN_VALUE);
pion.setNomPion(nom);
pion.setPositionX(positionX);
pion.setPositionY(positionY);
pion.setNomPlateau(nomPlateau);
pion.setCouleur(couleur);
pionsFacade.create(pion);
}
private void placerPieces(String nomPlateau, int couleur) {
if(couleur == 0){
//Blanc
createPion("Tour", 7, 0, nomPlateau, couleur);
createPion("Cavalier", 7, 1, nomPlateau, couleur);
createPion("Fou", 7, 2, nomPlateau, couleur);
createPion("Reine", 7, 3, nomPlateau, couleur);
createPion("Roi", 7, 4, nomPlateau, couleur);
createPion("Fou", 7, 5, nomPlateau, couleur);
createPion("Cavalier", 7, 6, nomPlateau, couleur);
createPion("Tour", 7, 7, nomPlateau, couleur);
createPion("Pion", 6, 0, nomPlateau, couleur);
createPion("Pion", 6, 1, nomPlateau, couleur);
createPion("Pion", 6, 2, nomPlateau, couleur);
createPion("Pion", 6, 3, nomPlateau, couleur);
createPion("Pion", 6, 4, nomPlateau, couleur);
createPion("Pion", 6, 5, nomPlateau, couleur);
createPion("Pion", 6, 6, nomPlateau, couleur);
createPion("Pion", 6, 7, nomPlateau, couleur);
}
if(couleur == 1){
//Noir
createPion("Tour", 0, 0, nomPlateau, couleur);
createPion("Cavalier", 0, 1, nomPlateau, couleur);
createPion("Fou", 0, 2, nomPlateau, couleur);
createPion("Reine", 0, 3, nomPlateau, couleur);
createPion("Roi", 0, 4, nomPlateau, couleur);
createPion("Fou", 0, 5, nomPlateau, couleur);
createPion("Cavalier", 0, 6, nomPlateau, couleur);
createPion("Tour", 0, 7, nomPlateau, couleur);
createPion("Pion", 1, 0, nomPlateau, couleur);
createPion("Pion", 1, 1, nomPlateau, couleur);
createPion("Pion", 1, 2, nomPlateau, couleur);
createPion("Pion", 1, 3, nomPlateau, couleur);
createPion("Pion", 1, 4, nomPlateau, couleur);
createPion("Pion", 1, 5, nomPlateau, couleur);
createPion("Pion", 1, 6, nomPlateau, couleur);
createPion("Pion", 1, 7, nomPlateau, couleur);
}
}
@Override
@Interceptors(ExceptionInterceptor.class)
public List<Pions> findByNomPlateau(String nomPlateau) {
return pionsFacade.findByNomPlateau(nomPlateau);
}
@Override
public boolean bougerPion(String nom, int couleur, String nomPlateau, int oldX, int oldY, int posX, int posY){
Pions pion = pionsFacade.findByNomCouleurNomPlateauXY(nom, couleur, nomPlateau, oldX, oldY);
Pions pionOld = null;
try{
pionOld = pionsFacade.findByPositionXY(posX, posY);
}catch(Exception ex){
ex.printStackTrace();
}
if(pionOld != null && pionOld.getCouleur() != couleur){
pionsFacade.remove(pionOld);
}
pion.setPositionX(posX);
pion.setPositionY(posY);
pionsFacade.edit(pion);
return true;
}
@Override
public int rejoindrePartie(String nomPlateau){
Plateaux plateau = plateauxFacade.findByName(nomPlateau);
if(plateau.getNombreDeJoueurs() == 0){
plateau.setNombreDeJoueurs(plateau.getNombreDeJoueurs() + 1);
plateauxFacade.edit(plateau);
createJoueur(0, nomPlateau);
return 0;
}else if(plateau.getNombreDeJoueurs() == 1){
plateau.setNombreDeJoueurs(plateau.getNombreDeJoueurs() + 1);
plateauxFacade.edit(plateau);
List<Joueurs> joueurs = joueursFacade.findByNomPlateau(nomPlateau);
int couleur = joueurs.get(0).getCouleur();
int couleurLibre = (couleur == 0 ? 1 : 0);
createJoueur(couleurLibre, nomPlateau);
return couleurLibre;
}else{
return -1;
}
}
@Override
public void quitterPartie(String nomPlateau, int couleur){
System.err.println("!!! QUITTER PARTIE !!!");
System.err.println("nomPlateau: " + nomPlateau);
System.err.println("couleur: " + couleur);
Plateaux plateau = plateauxFacade.findByName(nomPlateau);
plateau.setNombreDeJoueurs(plateau.getNombreDeJoueurs() - 1);
Joueurs joueur = joueursFacade.findByCouleurNomPlateau(couleur, nomPlateau);
System.err.println("joueur.id: " + joueur.getIdJoueur());
joueursFacade.remove(joueur);
plateauxFacade.edit(plateau);
}
@Override
public int getIdJoueur(String nomPlateau, int couleur) {
return joueursFacade.findByCouleurNomPlateau(couleur, nomPlateau).getIdJoueur();
}
@Override
public void deletePlateau(String nomPlateau){
Plateaux plateau = plateauxFacade.findByName(nomPlateau);
List<Pions> pions = pionsFacade.findByNomPlateau(nomPlateau);
for(Pions pion : pions){
pionsFacade.remove(pion);
}
plateauxFacade.remove(plateau);
}
@Override
public List<Point> getDeplacementPossible(int x, int y, int couleur, String nom){
return null;
}
}